/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fallen.deck.db_editor;

import fallen.deck.entity.*;
import fallen.deck.hibernate.HibernateUtil;
import java.util.List;
import org.hibernate.Session;

/**
 *
 * @author Carlos S. Moreno <CarlosS.Moreno@gmail.com>
 */
public class DB_Init {

    public static void main(String[] args) {
        resetDataBase();
    }

    public static void resetDataBase() {
        try {
            System.out.println("[INF]Getting Hibernate Session");
            Session session = HibernateUtil.getSessionFactory().getCurrentSession();
            System.out.println("[INF]Begining transaction");
            session.beginTransaction();

            System.out.print("[INF]Saving Expantions...");
            Expansion desp = new Expansion("Despertar");
            Expansion ins = new Expansion("Insania");
            session.save(desp);
            session.save(ins);
            System.out.println("Done");

            System.out.print("[INF]Saving Pathways...");
            Pathway poder = new Pathway("Poder","000124000","000077000","En las húmedas"
                    + " y selváticas tierras del Poder, la presencia de los"
                    + " Demonios potenció el crecimiento de toda vegetación,"
                    + " sin conocer límite. Los humanos aprendieron a adaptarse"
                    + " construyendo sus viviendas alrededor y dentro de grandes"
                    + " árboles. Entrenaron a los animales salvajes que habitaban,"
                    + " y los prepararon para la guerra.");
            session.save(poder);
            Pathway muerte = new Pathway("Muerte","159047169","121004131","En las góticas"
                    + " ciudades de la Muerte, los humanos continúan con sus"
                    + " linajes medievales, compartiendo sus secretos y"
                    + " hechicería a su oscura progenie. Poseen un profundo"
                    + " vínculo con la vida y la muerte, realizando rituales en"
                    + " ofrenda a los Demonios. Tratar de conseguir su"
                    + " conocimiento puede traducirse en participar activamente"
                    + " de un ritual de sacrificio...");
            session.save(muerte);
            Pathway locura = new Pathway("Locura","066091217","012039176","En las"
                    + " actualizadas ciudades de la Locura, el conocimiento y el"
                    + " tiempo es la moneda de cambio. Su ambición por el control"
                    + " total de la física y la tecnología ha llevado a estos"
                    + " humanos a consumir cuanto recurso encuentran, situación"
                    + " que los mantiene en constante conflicto con los demás"
                    + " seres terrenales. Gracias a sus avanzadas infraestructuras,"
                    + " se protegen del mundo exterior en sus ciudades flotantes."
                    + " Pero aún asi, ¿pueden protegerse del INFERNO?");
            session.save(locura);
            Pathway caos = new Pathway("Caos","ed693b","de4c18","En las áridas y"
                    + " calurosas tierras del Caos, los humanos han sobrevivido"
                    + " a los Demonios y desarrollado una gran fortaleza."
                    + " Grandes herreros y maestros del armamento, los señores"
                    + " del Caos aprovechan la tecnología para hacer un sinnúmero"
                    + " de poderosas armas y un ejército de criaturas mutantes.");
            session.save(caos);
            Pathway neutral = new Pathway("Nautral","210210210","154154154","");
            session.save(neutral);
            System.out.println("Done");

            System.out.print("[INF]Saving Frequencies...");
            Frequency comun = new Frequency("Común", "fcffff");
            session.save(comun);            
            Frequency infrecuente = new Frequency("Infrecuente", "e91b25");
            session.save(infrecuente);            
            Frequency rara = new Frequency("Rara", "fff300");
            session.save(rara);            
            Frequency epica = new Frequency("Épica", "02aeee");
            session.save(epica);
            System.out.println("Done");
            
            System.out.print("[INF]Saving Cards Types...");
            Type aliado = new Type("Aliado");
            session.save(aliado);            
            Type arma = new Type("Arma");
            session.save(arma);            
            Type ritual = new Type("Ritual");
            session.save(ritual);            
            Type objeto = new Type("Objeto");
            session.save(objeto);            
            Type escenario = new Type("Escenario");
            session.save(escenario);
            System.out.println("Done");
            
            System.out.print("[INF]Saving Cards Subtypes...");            
            Subtype abominacion = new Subtype ("Abominación");
            session.save(abominacion);
            Subtype arania = new Subtype ("Araña");
            session.save(arania);
            Subtype avatar = new Subtype ("Avatar");
            session.save(avatar);
            Subtype barahai = new Subtype ("Barahai");
            session.save(barahai);
            Subtype bestia = new Subtype ("Bestia");
            session.save(bestia);
            Subtype cyborg = new Subtype ("Cyborg");
            session.save(cyborg);
            Subtype diablo = new Subtype ("Diablo");
            session.save(diablo);
            Subtype elemental = new Subtype ("Elemental");
            session.save(elemental);
            Subtype encarnacion = new Subtype ("Encarnación");
            session.save(encarnacion);
            Subtype homunculo = new Subtype ("Homunculo");
            session.save(homunculo);
            Subtype humano = new Subtype ("Humano");
            session.save(humano);
            Subtype insecto = new Subtype ("Insecto");
            session.save(insecto);
            Subtype kirch = new Subtype ("Kirch");
            session.save(kirch);
            Subtype lobo = new Subtype ("Lobo");
            session.save(lobo);
            Subtype mutante = new Subtype ("Mutante");
            session.save(mutante);
            Subtype reptil = new Subtype ("Reptil");
            session.save(reptil);
            Subtype sucubo = new Subtype ("Sucubo");
            session.save(sucubo);
            Subtype tanque = new Subtype ("Tanque");
            session.save(tanque);
            Subtype vampiro = new Subtype ("Vampiro");
            session.save(vampiro);
            Subtype bot = new Subtype ("Bot");
            session.save(bot);
            System.out.println("Done");
            
            System.out.print("[INF]Saving Cards Spertypes...");            
            Supertype ilimitado = new Supertype ("Ilimitado");
            session.save(ilimitado);
            Supertype instantaneo = new Supertype ("Instántaneo");
            session.save(instantaneo);
            Supertype unico = new Supertype ("Único");
            session.save(unico);
            Supertype demonio = new Supertype ("Demonio");
            session.save(demonio);
            System.out.println("Done");
            
            System.out.print("[INF]Saving Artists... ");            
            Artist adrianKim = new Artist("Adrian", "Kim");
            session.save(adrianKim);
            Artist adrianZotto = new Artist("Adrian", "Zotto");
            session.save(adrianZotto);
            Artist albertoAprea = new Artist("Alberto", "Aprea");
            session.save(albertoAprea);
            Artist alejandroMachado = new Artist("Alejandro", "Machado");
            session.save(alejandroMachado);
            Artist brianMiroglio = new Artist("Brian", "Miroglio");
            session.save(brianMiroglio);
            Artist damianGraff = new Artist("Damian", "Graff");
            session.save(damianGraff);
            Artist daniloGarcia = new Artist("Danilo", "Garcia Medrano");
            session.save(daniloGarcia);
            Artist darioReyes = new Artist("Dario", "Reyes");
            session.save(darioReyes);
            Artist edgarMachiavello = new Artist("Edgar", "Machiavello");
            session.save(edgarMachiavello);
            Artist emmanuelBou = new Artist("Emmanuel", "Bou");
            session.save(emmanuelBou);
            Artist estebanCamposMillapel = new Artist("Esteban", "CamposMillapell");
            session.save(estebanCamposMillapel);
            Artist fabianGonzales = new Artist("Fabian Alberto", "Gonzales");
            session.save(fabianGonzales);
            Artist fabianAguilar = new Artist("Fabian Mayat", "Aguilar");
            session.save(fabianAguilar);
            Artist felipeAraya = new Artist("Felipe", "Araya");
            session.save(felipeAraya);
            Artist fernandoMorales = new Artist("Fernando", "Morales");
            session.save(fernandoMorales);
            Artist francoRiesco = new Artist("Franco", "Riesco");
            session.save(francoRiesco);
            Artist gastonReal = new Artist("Gaston", "Real");
            session.save(gastonReal);
            Artist gastonZubeldia = new Artist("Gaston", "Zubeldia");
            session.save(gastonZubeldia);
            Artist julianNobile = new Artist("Julian", "Nobile");
            session.save(julianNobile);
            Artist germanNobile = new Artist("German", "Nobile");
            session.save(germanNobile);
            Artist guillermoVillareal = new Artist("Guillermo", "Villareal");
            session.save(guillermoVillareal);
            Artist gustavoSantome = new Artist("Gustavo", "Santome");
            session.save(gustavoSantome);
            Artist hansLobos = new Artist("Hans", "Lobos");
            session.save(hansLobos);
            Artist ignacioBustos = new Artist("Ignacio", "Bustos");
            session.save(ignacioBustos);
            Artist ivannaMatilla = new Artist("Ivanna", "Matilla");
            session.save(ivannaMatilla);
            Artist juanManuelTumburus = new Artist("Juan Manuel", "Tumburus");
            session.save(juanManuelTumburus);
            Artist juanMartinezPinilla = new Artist("Juan Martinez", "Pinilla");
            session.save(juanMartinezPinilla);
            Artist leonardoVallejos = new Artist("Leonardo", "Vallejos");
            session.save(leonardoVallejos);
            Artist lizzo = new Artist("Lizzo", "");
            session.save(lizzo);
            Artist lucianoComizzo = new Artist("Luciano", "Comizzo");
            session.save(lucianoComizzo);
            Artist lucianoFleitas = new Artist("Luciano", "Fleitas");
            session.save(lucianoFleitas);
            Artist manuelaMauregui = new Artist("Manuela", "Mauregui");
            session.save(manuelaMauregui);
            Artist matiasMontenegro = new Artist("Matias", "Montenegro");
            session.save(matiasMontenegro);
            Artist mekenzieMartin = new Artist("MeKenzie", "Martin");
            session.save(mekenzieMartin);
            Artist nicolasFernandez = new Artist("Nicolas", "Fernandez");
            session.save(nicolasFernandez);
            Artist pabloGorigoitia = new Artist("Pablo", "Gorigoitia");
            session.save(pabloGorigoitia);
            Artist pauloBarrios = new Artist("Paulo", "Barrios");
            session.save(pauloBarrios);
            Artist robertoViacava = new Artist("Roberto", "Viacava");
            session.save(robertoViacava);
            Artist rodolfoBuscaglia = new Artist("Rodolfo", "Buscaglia");
            session.save(rodolfoBuscaglia);
            Artist sandroRybak = new Artist("Sandro", "Rybak");
            session.save(sandroRybak);
            Artist santiagoCalleriza = new Artist("Santiago", "Calleriza");
            session.save(santiagoCalleriza);
            Artist saraVillegas = new Artist("Sara", "Villegas");
            session.save(saraVillegas);
            Artist sergioTarquini = new Artist("Sergio", "Tarquini");
            session.save(sergioTarquini);
            Artist stryke = new Artist("Stryke", "");
            session.save(stryke);
            Artist timKeil = new Artist("Tim", "Keil");
            session.save(timKeil);
            Artist tomasAira = new Artist("Tomas", "Aira");
            session.save(tomasAira);
            Artist veronicaVallejos = new Artist("Veronica", "Vallejos");
            session.save(veronicaVallejos);
            System.out.println("Done");
            
            System.out.print("[INF]Saving 'Despertar' Cards...");
            //***************************DESPERTAR***************************//
            //Demons
            Card akayra = new Card("Akayra, belleza ignea");
            akayra.setEffect("Cuando Akayra haga 5 o mas daño en un turno, volteala.");
            akayra.setText("\"Mirame a los ojos. Observa tu mundo consumirse en llamas.\"");
            akayra.setExpansion(desp);
            akayra.setPathway(caos);
            akayra.setStr("1");            
            akayra.getSupertype().add(demonio);
            akayra.setFrequency(comun);
            akayra.getArtist().add(damianGraff);
            akayra.setNumber(1);
            session.save(akayra);
            Card narghot = new Card("Narghot, el irracional");
            narghot.setEffect("Destruir cuatro recursos enderezados que controles: Voltea Narghot.");
            narghot.setText("Destruir, necesito destruir… ¡Busquen más dominios para devastar!");
            narghot.setExpansion(desp);
            narghot.setPathway(caos);
            narghot.setStr("2");
            narghot.getSupertype().add(demonio);
            narghot.setFrequency(comun);
            narghot.setNumber(2);
            session.save(narghot);
            Card syv = new Card("Syv, padre de la desgracia");
            syv.setEffect("Cuando controles siete o más aliados, voltea Syv.");
            syv.setText("\"La horaz ha zhegado, miz pequeñoz. ¡Ezte ez nueztro momentoz!\"");
            syv.setExpansion(desp);
            syv.setPathway(caos);
            syv.setStr("3");
            syv.getSupertype().add(demonio);
            syv.setFrequency(comun);
            syv.setNumber(3);
            session.save(syv);
            Card baggrund = new Card("Baggrund, agotamentes");
            baggrund.setEffect("Cuando tus enemigos no tengan cartas en su mano, voltea Baggrund.");
            baggrund.setText("\"Cuando no tienes opciones, no tienes futuro.\"");
            baggrund.setExpansion(desp);
            baggrund.setPathway(locura);
            baggrund.setStr("3");
            baggrund.getSupertype().add(demonio);
            baggrund.setFrequency(comun);
            baggrund.setNumber(4);
            session.save(baggrund);
            Card faradt = new Card("Faradt, consumevoluntades");
            faradt.setEffect("Girar cuatro aliados enderezados que controles: Voltea Fáradt.");
            faradt.setText("\"La energía proviene de cualquier lado. Algunas criaturas mediocres por ejemplo.\"");
            faradt.setExpansion(desp);
            faradt.setPathway(locura);
            faradt.setStr("1");
            faradt.getSupertype().add(demonio);
            faradt.setFrequency(comun);
            faradt.setNumber(5);
            session.save(faradt);
            Card viden = new Card("Viden, el omnisciente");
            viden.setEffect("Cuando tu mazo tenga quince o menos cartas, voltea Viden.");
            viden.setText("\"Conozco el día que perecerás. Adivinaste.\"");
            viden.setExpansion(desp);
            viden.setPathway(locura);
            viden.setStr("2");
            viden.getSupertype().add(demonio);
            viden.setFrequency(comun);
            viden.setNumber(6);
            session.save(viden);
            Card at_fjerne = new Card("At Fjerne, el desterrado");
            at_fjerne.setEffect("Exiliar las primeras diez cartas de tu Inferno: Voltea At Fjerne.");
            at_fjerne.setText("\"Destruiré mi hogar, para encontrar uno nuevo.\"");
            at_fjerne.setExpansion(desp);
            at_fjerne.setPathway(muerte);
            at_fjerne.setStr("1");
            at_fjerne.getSupertype().add(demonio);
            at_fjerne.setFrequency(comun);
            at_fjerne.setNumber(7);
            session.save(at_fjerne);
            Card naamah = new Card("Naamah, escultor de carne");
            naamah.setExpansion(desp);
            naamah.setPathway(muerte);
            naamah.setStr("2");
            naamah.getSupertype().add(demonio);
            naamah.setFrequency(comun);
            naamah.setNumber(8);
            session.save(naamah);
            Card unwaj = new Card("Unwaj, nacida de la muerte");
            unwaj.setExpansion(desp);
            unwaj.setPathway(muerte);
            unwaj.setStr("3");
            unwaj.getSupertype().add(demonio);
            unwaj.setFrequency(comun);
            unwaj.setNumber(9);
            session.save(unwaj);
            Card arasunu = new Card("Arasunu, relampago de vida");
            arasunu.setExpansion(desp);
            arasunu.setPathway(poder);
            arasunu.setStr("1");
            arasunu.getSupertype().add(demonio);
            arasunu.setFrequency(comun);
            arasunu.setNumber(10);
            session.save(arasunu);
            Card lapatt = new Card("Lapatt, comandante infernal");
            lapatt.setExpansion(desp);
            lapatt.setPathway(poder);
            lapatt.setStr("3");
            lapatt.getSupertype().add(demonio);
            lapatt.setFrequency(comun);
            lapatt.setNumber(11);
            session.save(lapatt);
            Card zustatek = new Card("Zustatek, sabio espectante");
            zustatek.setExpansion(desp);
            zustatek.setPathway(poder);
            zustatek.setStr("2");
            zustatek.getSupertype().add(demonio);
            zustatek.setFrequency(comun);
            zustatek.setNumber(12);
            session.save(zustatek);

            //Caos Cards
            Card desp13 = new Card("Arder en llamas");
            desp13.setEffect("Tu demonio hace 2 daño a cada aliado y a cada demonio.");
            desp13.setText("\"No hay mejor manera de empezar el dia.\" -Akayra");
            desp13.setExpansion(desp);
            desp13.setPathway(caos);
            desp13.setCost("3");
            desp13.getType().add(ritual);
            desp13.setFrequency(infrecuente);
            desp13.setNumber(13);
            session.save(desp13);

            Card desp14 = new Card("Aullido de la manada");
            desp14.setEffect("Pon una ficha de aliado caos Kirch 1 FUE, 1 RES en juego por cada ficha que controles.");
            desp14.setText("Los Kirchs sin amo vagan sin rumbo por el Gran desierto, hasta que su instinto los vuelve a reunir.");
            desp14.setExpansion(desp);
            desp14.setPathway(caos);
            desp14.setCost("4");
            desp14.getType().add(ritual);
            desp14.setFrequency(rara);
            desp14.setNumber(14);
            session.save(desp14);

            Card desp15 = new Card("Buscador de violencia perdida");
            desp15.setEffect("Vinculo 0: Pon el arma objetivo de coste 3 o menos de tu Inferno en tu mano.");
            desp15.setText("Poseen un vinculo poderoso con el Inferno.");
            desp15.setExpansion(desp);
            desp15.setPathway(caos);
            desp15.setCost("2");
            desp15.setStr("2");
            desp15.setRes("1");
            desp15.getType().add(aliado);
            desp15.getSubtype().add(humano);
            desp15.setFrequency(comun);
            desp15.setNumber(15);
            session.save(desp15);

            System.out.println("Done");

            //System.out.print("[INF]Saving 'Insania' Cards...");
            //***************************INSANIA***************************//
            //Demons
            //Not Implemented Yet

            session.flush();
            System.out.println("[INF]Done...");

            session.getTransaction().commit();
            System.out.println("[INF]Data Base Created Successfully!");
            
            Session session2 = HibernateUtil.getSessionFactory().getCurrentSession();
            session2.beginTransaction();
        
            List types = session2.createQuery("from Type").list();
            session2.getTransaction().commit();
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
